package com.spring.boot.tool;

import com.spring.boot.entity.Users;
import sun.awt.SunHints;

import java.util.Base64;

/**
 * @author 刘骄阳
 * 2021-07-14 11:04
 */
public class Encode {
    //操作bytes

    private static final String salt = "!@#$%^&*()_+";

    /**
     * Base64加密
     *
     * @param value 要加密的字符串
     * @param num   执行次数
     * @return 加密后的值
     */
    public static String base64Encode(String value, int num) {
        do {
            value = Base64.getEncoder().encodeToString(value.getBytes());
        } while (--num >= 0);
        return value;
    }

    /**
     * Base64解密
     *
     * @param value 要解密的字符串
     * @param num   执行次数
     * @return 加密前的值
     */
    public static String base64Decoder(String value, int num) {
        do {
            value = new String(Base64.getDecoder().decode(value.getBytes()));
        } while (--num >= 0);
        return value;
    }

    /**
     * Base64根据盐值加密
     *
     * @param value 要加密的字符串
     * @param num   执行次数
     * @return 加密后的值
     */
    public static String base64EncodeBySalt(String value, int num) {
        byte[] bytes = base64Encode(value, num).getBytes();
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] += 1;
        }
        return new String(bytes);
    }

    /**
     * Base64解密
     *
     * @param value 要解密的字符串
     * @param num   执行次数
     * @return 加密前的值
     */
    public static String base64DecoderBySalt(String value, int num) {
        byte[] bytes = value.getBytes();
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] -= 1;
        }
        return base64Decoder(new String(bytes), num);
    }


}
